{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Creating a pandapipes network including height differences"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This tutorial shows how to define junctions on different height levels. The following network will be created.\n",
    "\n",
    "<img src=\"pics/rng_height.png\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Empty network"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "At first, pandapipes is imported. We will then create an empty network container and specify the\n",
    "fluid. The fluid water from the pandapipes library is used."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "scrolled": true,
    "ExecuteTime": {
     "end_time": "2024-08-19T14:00:37.229949Z",
     "start_time": "2024-08-19T14:00:35.528051Z"
    }
   },
   "source": [
    "import pandapipes as pp"
   ],
   "outputs": [],
   "execution_count": 1
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-19T14:00:37.270307Z",
     "start_time": "2024-08-19T14:00:37.252995Z"
    }
   },
   "source": [
    "net = pp.create_empty_network(fluid=\"water\") # create an empty network"
   ],
   "outputs": [],
   "execution_count": 2
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The <span style=\"color:blue\">create</span> functions are used to create more components. The components will be added to the corresponding component tables."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Junctions"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-19T14:00:41.636793Z",
     "start_time": "2024-08-19T14:00:41.620514Z"
    }
   },
   "source": [
    "junction1 = pp.create_junction(net, pn_bar=1.0, tfluid_k=293.15, height_m = 352, name=\"Junction 1\")\n",
    "junction2 = pp.create_junction(net, pn_bar=1.0, tfluid_k=293.15, height_m = 358, name=\"Junction 2\")\n",
    "junction3 = pp.create_junction(net, pn_bar=1.0, tfluid_k=293.15, height_m = 361, name=\"Junction 3\")\n",
    "junction4 = pp.create_junction(net, pn_bar=1.0, tfluid_k=293.15, height_m = 346, name=\"Junction 4\")\n",
    "junction5 = pp.create_junction(net, pn_bar=1.0, tfluid_k=293.15, height_m = 400, name=\"Junction 5\")"
   ],
   "outputs": [],
   "execution_count": 3
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The junctions are now stored in the net and can be called. Some parameters, which were not explicitly mentioned in the last section, were defined using default values. Note that the parameters of the junctions above contain the parameter height_m, which defines the height above sea level of the junction. The stored potential energy is automatically respected by pandapipes."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-19T14:00:46.600384Z",
     "start_time": "2024-08-19T14:00:46.586735Z"
    }
   },
   "source": [
    "net.junction # show junction table"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "         name  pn_bar  tfluid_k  height_m  in_service      type\n",
       "0  Junction 1     1.0    293.15     352.0        True  junction\n",
       "1  Junction 2     1.0    293.15     358.0        True  junction\n",
       "2  Junction 3     1.0    293.15     361.0        True  junction\n",
       "3  Junction 4     1.0    293.15     346.0        True  junction\n",
       "4  Junction 5     1.0    293.15     400.0        True  junction"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>pn_bar</th>\n",
       "      <th>tfluid_k</th>\n",
       "      <th>height_m</th>\n",
       "      <th>in_service</th>\n",
       "      <th>type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Junction 1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>293.15</td>\n",
       "      <td>352.0</td>\n",
       "      <td>True</td>\n",
       "      <td>junction</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Junction 2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>293.15</td>\n",
       "      <td>358.0</td>\n",
       "      <td>True</td>\n",
       "      <td>junction</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Junction 3</td>\n",
       "      <td>1.0</td>\n",
       "      <td>293.15</td>\n",
       "      <td>361.0</td>\n",
       "      <td>True</td>\n",
       "      <td>junction</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Junction 4</td>\n",
       "      <td>1.0</td>\n",
       "      <td>293.15</td>\n",
       "      <td>346.0</td>\n",
       "      <td>True</td>\n",
       "      <td>junction</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Junction 5</td>\n",
       "      <td>1.0</td>\n",
       "      <td>293.15</td>\n",
       "      <td>400.0</td>\n",
       "      <td>True</td>\n",
       "      <td>junction</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 4
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the next steps, more components are added."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### External Grid"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the example, the external grid is connected to junction5. The pressure is at 0.5 bar."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-19T14:00:49.779695Z",
     "start_time": "2024-08-19T14:00:49.770055Z"
    }
   },
   "source": [
    "medium_pressure_grid = pp.create_ext_grid(net, junction=junction5, p_bar=0.5, t_k=293.15, name=\"Grid Connection\")\n",
    "\n",
    "net.ext_grid # show external grid table"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "              name  junction  p_bar     t_k  in_service type\n",
       "0  Grid Connection         4    0.5  293.15        True   pt"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>junction</th>\n",
       "      <th>p_bar</th>\n",
       "      <th>t_k</th>\n",
       "      <th>in_service</th>\n",
       "      <th>type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Grid Connection</td>\n",
       "      <td>4</td>\n",
       "      <td>0.5</td>\n",
       "      <td>293.15</td>\n",
       "      <td>True</td>\n",
       "      <td>pt</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 5
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Pipes"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The network contains four pipes. The lenghts and the junctions are displayed on the network\n",
    "figure. Pipe 4 is defined using a roughness k_mm of 0.5 mm, which deviates from the default\n",
    "value of 1 mm."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-19T14:00:53.731512Z",
     "start_time": "2024-08-19T14:00:53.716223Z"
    }
   },
   "source": [
    "pipe1 = pp.create_pipe_from_parameters(net, from_junction=junction1, to_junction=junction2, length_km=0.545, diameter_m=0.2,  name=\"Pipe 1\")\n",
    "pipe2 = pp.create_pipe_from_parameters(net, from_junction=junction2, to_junction=junction3, length_km=0.095, diameter_m=0.15, name=\"Pipe 2\")\n",
    "pipe3 = pp.create_pipe_from_parameters(net, from_junction=junction1, to_junction=junction4, length_km=0.285, diameter_m=0.15, name=\"Pipe 3\")\n",
    "pipe4 = pp.create_pipe_from_parameters(net, from_junction=junction1, to_junction=junction5, length_km=0.43, diameter_m=0.15, k_mm=0.5, name=\"Pipe 4\")"
   ],
   "outputs": [],
   "execution_count": 6
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Up to now, the pipe components table looks like the table displayed in the following section:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-19T14:00:57.958470Z",
     "start_time": "2024-08-19T14:00:57.948328Z"
    }
   },
   "source": [
    "net.pipe # show pipe table"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "     name  from_junction  to_junction std_type  length_km  diameter_m  k_mm  \\\n",
       "0  Pipe 1              0            1     None      0.545        0.20   0.2   \n",
       "1  Pipe 2              1            2     None      0.095        0.15   0.2   \n",
       "2  Pipe 3              0            3     None      0.285        0.15   0.2   \n",
       "3  Pipe 4              0            4     None      0.430        0.15   0.5   \n",
       "\n",
       "   loss_coefficient  u_w_per_m2k  text_k  qext_w  sections  in_service  type  \n",
       "0               0.0          0.0     NaN     0.0         1        True  pipe  \n",
       "1               0.0          0.0     NaN     0.0         1        True  pipe  \n",
       "2               0.0          0.0     NaN     0.0         1        True  pipe  \n",
       "3               0.0          0.0     NaN     0.0         1        True  pipe  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>from_junction</th>\n",
       "      <th>to_junction</th>\n",
       "      <th>std_type</th>\n",
       "      <th>length_km</th>\n",
       "      <th>diameter_m</th>\n",
       "      <th>k_mm</th>\n",
       "      <th>loss_coefficient</th>\n",
       "      <th>u_w_per_m2k</th>\n",
       "      <th>text_k</th>\n",
       "      <th>qext_w</th>\n",
       "      <th>sections</th>\n",
       "      <th>in_service</th>\n",
       "      <th>type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Pipe 1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>None</td>\n",
       "      <td>0.545</td>\n",
       "      <td>0.20</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>pipe</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Pipe 2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>None</td>\n",
       "      <td>0.095</td>\n",
       "      <td>0.15</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>pipe</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Pipe 3</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>None</td>\n",
       "      <td>0.285</td>\n",
       "      <td>0.15</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>pipe</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Pipe 4</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>None</td>\n",
       "      <td>0.430</td>\n",
       "      <td>0.15</td>\n",
       "      <td>0.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>pipe</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 7
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The parameters `from_junction` and `to_junction` define the orientation of the pipe. If the flow\n",
    "enters the pipe at the `from_junction` node and leaves it through the `to_junction` node, the\n",
    "velocity will have a positive sign. Otherwise, it has a negative sign."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sinks\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With a sink, a constant mass flow can be defined. Here, we will create two sinks with mass flows of\n",
    "277 g/s and 139 g/s. Sinks and sources are always assigned to a specific junction. The sign of the\n",
    "mass flow is positive, if a mass flow is removed from the system."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": "     name  junction  mdot_kg_per_s  scaling  in_service  type\n0  Sink 1         3          0.277      1.0        True  sink\n1  Sink 2         2          0.139      1.0        True  sink",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>name</th>\n      <th>junction</th>\n      <th>mdot_kg_per_s</th>\n      <th>scaling</th>\n      <th>in_service</th>\n      <th>type</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>Sink 1</td>\n      <td>3</td>\n      <td>0.277</td>\n      <td>1.0</td>\n      <td>True</td>\n      <td>sink</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>Sink 2</td>\n      <td>2</td>\n      <td>0.139</td>\n      <td>1.0</td>\n      <td>True</td>\n      <td>sink</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sink = pp.create_sink(net, junction=junction4, mdot_kg_per_s=0.277, name=\"Sink 1\")\n",
    "sink = pp.create_sink(net, junction=junction3, mdot_kg_per_s=0.139, name=\"Sink 2\")\n",
    "net.sink"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The calculation is now started. The pipe friction can be respected using different models. By default, the Nikuradse model is used. A distinction between laminar and turbulent flow is not implemented in pandapipes. Typically, pipe calculation software detects the kind of flow. However, for pandapipes applications, we usually can expect turbulent flow conditions.\n",
    "\n",
    "Nevertheless, a distinction between laminar and turbulent flow will be added in the future."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-08-19T14:01:16.329041Z",
     "start_time": "2024-08-19T14:01:12.912139Z"
    }
   },
   "source": [
    "pp.pipeflow(net, friction_model=\"nikuradse\")"
   ],
   "outputs": [],
   "execution_count": 8
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "The results are ready now and can be displayed with the following commands:"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-08-19T14:01:24.515012Z",
     "start_time": "2024-08-19T14:01:24.508487Z"
    }
   },
   "source": [
    "net.res_junction  # calculated pressure and temperature at junctions"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "      p_bar     t_k\n",
       "0  5.194647  293.15\n",
       "1  4.607818  293.15\n",
       "2  4.314403  293.15\n",
       "3  5.781476  293.15\n",
       "4  0.500000  293.15"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>p_bar</th>\n",
       "      <th>t_k</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.194647</td>\n",
       "      <td>293.15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.607818</td>\n",
       "      <td>293.15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.314403</td>\n",
       "      <td>293.15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5.781476</td>\n",
       "      <td>293.15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>293.15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 9
  },
  {
   "cell_type": "code",
   "metadata": {
    "pycharm": {
     "name": "#%%\n"
    },
    "ExecuteTime": {
     "end_time": "2024-08-19T14:01:28.266605Z",
     "start_time": "2024-08-19T14:01:28.253169Z"
    }
   },
   "source": [
    "net.res_pipe  # velocities, mass flows through pipes and other results"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "   v_mean_m_per_s  p_from_bar  p_to_bar  t_from_k  t_to_k  mdot_from_kg_per_s  \\\n",
       "0             0.0    5.194647  4.607818    293.15  293.15                 0.0   \n",
       "1             0.0    4.607818  4.314403    293.15  293.15                 0.0   \n",
       "2             0.0    5.194647  5.781476    293.15  293.15                 0.0   \n",
       "3             0.0    5.194647  0.500000    293.15  293.15                 0.0   \n",
       "\n",
       "   mdot_to_kg_per_s  vdot_m3_per_s  reynolds    lambda  \n",
       "0              -0.0            0.0       0.0  0.019623  \n",
       "1              -0.0            0.0       0.0  0.021072  \n",
       "2              -0.0            0.0       0.0  0.021072  \n",
       "3              -0.0            0.0       0.0  0.026936  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>v_mean_m_per_s</th>\n",
       "      <th>p_from_bar</th>\n",
       "      <th>p_to_bar</th>\n",
       "      <th>t_from_k</th>\n",
       "      <th>t_to_k</th>\n",
       "      <th>mdot_from_kg_per_s</th>\n",
       "      <th>mdot_to_kg_per_s</th>\n",
       "      <th>vdot_m3_per_s</th>\n",
       "      <th>reynolds</th>\n",
       "      <th>lambda</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>5.194647</td>\n",
       "      <td>4.607818</td>\n",
       "      <td>293.15</td>\n",
       "      <td>293.15</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.019623</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>4.607818</td>\n",
       "      <td>4.314403</td>\n",
       "      <td>293.15</td>\n",
       "      <td>293.15</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.021072</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.0</td>\n",
       "      <td>5.194647</td>\n",
       "      <td>5.781476</td>\n",
       "      <td>293.15</td>\n",
       "      <td>293.15</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.021072</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.0</td>\n",
       "      <td>5.194647</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>293.15</td>\n",
       "      <td>293.15</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.026936</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 10
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plotting\n",
    "\n",
    "Using matplotlib, the network can easily be plotted."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-08-19T14:01:39.084519Z",
     "start_time": "2024-08-19T14:01:38.996816Z"
    }
   },
   "source": [
    "import matplotlib\n",
    "from pandapipes.plotting.simple_plot import simple_plot as sp\n",
    "\n",
    "sp(net, plot_sinks = True)"
   ],
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "hp.pandapipes.plotting.simple_plot - WARNING: No or insufficient geodata available --> Creating artificial coordinates. This may take some time\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x800 with 1 Axes>"
      ],
      "image/png": "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gAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIIBABwAAgAACHQAAAAIIdAAAAAgg0AEAACCAQAcAAIAAAh0AAAACCHQAAAAIINABAAAggEAHAACAAAIdAAAAAgh0AAAACCDQAQAAIMD/A7bYsP/AHkiRAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 11
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As long as no coordinates have been explicitly added to the junctions, automatically generated coordinates are used."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
